package Componentes;

import javax.swing.ImageIcon;

import Graficos.ComponenteGrafico;

/**
 * ProyectoX TDP 2011
 * @author  Ma Gimena Ramos- LU:82716
 * @autor Brenda Dilschneider- LU: 92774
 *
 */

public class Tiro extends Componente implements Runnable{

		private boolean corte;
		private int controlPos;
		private Thread hilo;
		private int enteroCorte;
		private int sentido;
		
		/**
		 * constructor
		 */
		public Tiro(){
			super();
			corte=true;
			controlPos=0;
			hilo= new Thread(this);
			enteroCorte=0;
		    comp=  new ComponenteGrafico(new ImageIcon(getClass().getClassLoader().getResource("Dibujos/tiroM.gif")));
			this.setGrafico(comp);
			sentido=0;

		}
		
		/**
		 * clona el objeto y devuelve un clon de tipo Tiro
		 */
		public Object clonar()
		{
			Tiro v = new Tiro();

		ComponenteGrafico c=  new ComponenteGrafico(new ImageIcon(getClass().getClassLoader().getResource("Dibujos/tiroM.gif")));
			
			v.setGrafico(c);
			
			return v;
		}
			/**
			 * metodo redefinido sin uso
			 */
			@Override
			public void chocarMario() {
							}

			/**
			 * inicia el hilo del objeto
			 */
			@Override
			public void arrancarHilo() {
				sentido=mario.obtenerSentido();
				hilo.start();
				
			}
			/**
			 * metodo redefinido sin uso
			 */
			@Override
			public void pisadoPorMario() {
			
			}

			/**
			 * inicia el movimiento del hilo controlando si choca con un enemigo para matarlo
			 */
			@Override
			public void run() {
				while(corte){
				if (sentido==0){
					this.comp.setLocation(this.comp.getLocation().x+1, this.comp.getLocation().y);
					controlPos+=1;
					enteroCorte+=1;
					Componente c1= mario.obtenerPartida().getComponente(this.obtenerPosicion().getX(),this.obtenerPosicion().getY());
					if (c1!=null)
						{this.serChocado(c1);
						
						
										}
						
					if (controlPos==16)
						{controlPos=0;
					     this.setPosicion(this.obtenerPosicion().getX()+1,this.obtenerPosicion().getY());
						try {
							hilo.sleep(400);
							
						if (enteroCorte==64)
							{corte=false;
							this.comp.setIcon(null);
						hilo.stop();
						
							}
						} catch (InterruptedException e) {
												e.printStackTrace();
						}
						
						}
					
				}else
					{	this.comp.setLocation(this.comp.getLocation().x-1, this.comp.getLocation().y);
					controlPos-=1;
					enteroCorte+=1;
					Componente c1= mario.obtenerPartida().getComponente(this.obtenerPosicion().getX(),this.obtenerPosicion().getY());
					if (c1!=null)
						{this.serChocado(c1);	
										}
						
					if (controlPos==-16)
						{controlPos=0;
					     this.setPosicion(this.obtenerPosicion().getX()-1,this.obtenerPosicion().getY());
						try {
							hilo.sleep(400);
							
						if (enteroCorte==64)
							{corte=false;
							this.comp.setIcon(null);
						hilo.stop();
						
							}
						} catch (InterruptedException e) {
												e.printStackTrace();
						}
						
						}
					

					}
					}
			}


			/**
			 * detiene el hilo del objeto
			 */
			@Override
			public void destruirHilo() {
				this.comp.setIcon(null);
			hilo.stop();
				
			}

			/**
			 * metodo redefinido sin uso
			 */
			@Override
			public void serChocado() {
			
			}

			
			/**
			 * llama a destruirHilo
			 */
			@Override
			public void serChocado(Componente c) {
				c.destruirHilo();
			
			}
			


			
		}
